package com.hyt.it.ogt.ks.mq;

import javax.annotation.Resource;

import org.springframework.amqp.rabbit.core.RabbitTemplate;

import com.alibaba.fastjson.JSON;
import com.hyt.it.ogt.ks.config.ConfigManager;
import com.hyt.it.ogt.ks.mq.model.CandidateAnswerLogBackupDTO;

import lombok.extern.slf4j.Slf4j;

/**
 * @author wuyingge
 * @ClassName CandidateAnswerLogProducer.java
 * @Description 考生保存答案请求参数日志
 * @createTime 2021年10月16日 14:30:00
 */
//@Component
@Slf4j
public class CandidateAnswerLogProducer {
    @Resource
    private ConfigManager configManager;
    @Resource
    private RabbitTemplate rabbitTemplate;

    /**
     * 发布消息
     *
     * @param obj 消息体
     */
    public void sendMessage(CandidateAnswerLogBackupDTO obj) {
        this.sendMessage(obj, null);
    }

    /**
     * 发布消息
     *
     * @param obj        消息体
     * @param delayTimes 延迟消息，可以为空
     */
    public void sendMessage(CandidateAnswerLogBackupDTO obj, final Long delayTimes) {
        String s = JSON.toJSONString(obj);
        log.debug("# CandidateAnswerLogProducer发送消息：【{}】", s);
        //obj.setServerIP(configManager.getServerIP());
        //给延迟队列发送消息
        rabbitTemplate.convertAndSend(configManager.getKsDirect(), configManager.getCandidateAnswerLogRoute(),
                s, message -> {
                    if (delayTimes != null) {
                        //给消息设置延迟毫秒值
                        message.getMessageProperties().setExpiration(String.valueOf(delayTimes));
                    }
                    return message;
                });
        log.info("send json:{}", obj);
    }

}
